*
* Makes the given @context the current GL context, or unsets
* the current GL context if @context is %NULL.
- *
- * Returns: %TRUE if successful
*/
-gboolean
+void
gdk_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context)
{
GdkGLContext *current = gdk_display_get_current_gl_context (display);
if (current == context)
- return TRUE;
+ return;
if (context == NULL)
g_object_set_data (G_OBJECT (display), "-gdk-gl-current-context", NULL);
g_object_ref (context),
(GDestroyNotify) g_object_unref);
- return GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context);
+ GDK_DISPLAY_GET_CLASS (display)->make_gl_context_current (display, context);
}
/*< private >
gchar * (*utf8_to_string_target) (GdkDisplay *display,
const gchar *text);
- gboolean (*make_gl_context_current) (GdkDisplay *display,
+ void (*make_gl_context_current) (GdkDisplay *display,
GdkGLContext *context);
void (*destroy_gl_context) (GdkDisplay *display,
GdkGLContext *context);
void gdk_display_destroy_gl_context (GdkDisplay *display,
GdkGLContext *context);
-gboolean gdk_display_make_gl_context_current (GdkDisplay *display,
+void gdk_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context);
GdkGLContext * gdk_display_get_current_gl_context (GdkDisplay *display);
clip_region = gdk_cairo_region_from_clip (cr);
- if (!gdk_gl_context_make_current (context))
- g_error ("make current failed");
+ gdk_gl_context_make_current (context);
glGenFramebuffersEXT (1, &framebuffer);
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, framebuffer);
*
* Makes the @context the current one.
*
- * Returns: %TRUE if the context is current
- *
* Since: 3.16
*/
-gboolean
+void
gdk_gl_context_make_current (GdkGLContext *context)
{
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
- g_return_val_if_fail (GDK_IS_GL_CONTEXT (context), FALSE);
+ g_return_if_fail (GDK_IS_GL_CONTEXT (context));
- return gdk_display_make_gl_context_current (gdk_window_get_display (priv->window), context);
+ gdk_display_make_gl_context_current (gdk_window_get_display (priv->window), context);
}
/**
GdkWindow * gdk_gl_context_get_window (GdkGLContext *context);
GDK_AVAILABLE_IN_3_16
-gboolean gdk_gl_context_make_current (GdkGLContext *context);
+void gdk_gl_context_make_current (GdkGLContext *context);
GDK_AVAILABLE_IN_3_16
GdkGLContext * gdk_gl_context_get_current (void);
GDK_AVAILABLE_IN_3_16
int wh = gdk_window_get_height (window) * gdk_window_get_scale_factor (window);
context = gdk_window_get_paint_gl_context (window, NULL);
- if (context == NULL || !gdk_gl_context_make_current (context))
+ if (context == NULL)
{
g_warning ("gl rendering failed, context: %p", context);
window->current_paint.use_gl = FALSE;
}
else
{
+ gdk_gl_context_make_current (context);
/* With gl we always need a surface to combine the gl
drawing with the native drawing. */
needs_surface = TRUE;
cairo_region_subtract (opaque_region, window->current_paint.flushed_region);
cairo_region_subtract (opaque_region, window->current_paint.need_blend_region);
- if (!gdk_gl_context_make_current (window->gl_paint_context))
- g_error ("make current failed");
+ gdk_gl_context_make_current (window->gl_paint_context);
if (!cairo_region_is_empty (opaque_region))
gdk_gl_texture_from_surface (window->current_paint.surface,
GdkWindow *window = gdk_gl_context_get_window (context);
int width, height;
- if (!gdk_gl_context_make_current (context))
- return;
+ gdk_gl_context_make_current (context);
width = gdk_window_get_width (window);
height = gdk_window_get_height (window);
egl_surface = gdk_wayland_window_get_egl_surface (window->impl_window,
context_wayland->egl_config);
- if (display_wayland->have_egl_buffer_age &&
- gdk_gl_context_make_current (window->gl_paint_context))
- eglQuerySurface (display_wayland->egl_display, egl_surface,
- EGL_BUFFER_AGE_EXT, &buffer_age);
+ if (display_wayland->have_egl_buffer_age)
+ {
+ gdk_gl_context_make_current (window->gl_paint_context);
+ eglQuerySurface (display_wayland->egl_display, egl_surface,
+ EGL_BUFFER_AGE_EXT, &buffer_age);
+ }
invalidate_all = FALSE;
if (buffer_age == 0 || buffer_age >= 4)
GdkWaylandGLContext *context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
EGLSurface egl_surface;
- if (!gdk_gl_context_make_current (context))
- return;
+ gdk_gl_context_make_current (context);
egl_surface = gdk_wayland_window_get_egl_surface (window->impl_window,
context_wayland->egl_config);
}
}
-gboolean
+void
gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context)
{
{
eglMakeCurrent(display_wayland->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
EGL_NO_CONTEXT);
- return TRUE;
+ return;
}
context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
context_wayland->egl_config);
}
- if (!eglMakeCurrent(display_wayland->egl_display, egl_surface,
- egl_surface, context_wayland->egl_context))
- return FALSE;
-
- return TRUE;
+ if (!eglMakeCurrent (display_wayland->egl_display, egl_surface,
+ egl_surface, context_wayland->egl_context))
+ g_critical ("eglMakeCurrent failed");
}
cairo_region_t *update_area);
void gdk_wayland_display_destroy_gl_context (GdkDisplay *display,
GdkGLContext *context);
-gboolean gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
+void gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context);
G_END_DECLS
GdkWindow *window = gdk_gl_context_get_window (context);
int width, height;
- if (!gdk_gl_context_make_current (context))
- return;
+ gdk_gl_context_make_current (context);
width = gdk_window_get_width (window);
height = gdk_window_get_height (window);
buffer_age = 0;
- if (display_x11->has_glx_buffer_age &&
- gdk_gl_context_make_current (window->gl_paint_context))
- glXQueryDrawable(dpy, context_x11->drawable,
- GLX_BACK_BUFFER_AGE_EXT, &buffer_age);
+ if (display_x11->has_glx_buffer_age)
+ {
+ gdk_gl_context_make_current (window->gl_paint_context);
+ glXQueryDrawable(dpy, context_x11->drawable,
+ GLX_BACK_BUFFER_AGE_EXT, &buffer_age);
+ }
invalidate_all = FALSE;
if (buffer_age == 0 || buffer_age >= 4)
}
}
-gboolean
+void
gdk_x11_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context)
{
if (context == NULL)
{
glXMakeContextCurrent (dpy, None, None, NULL);
- return TRUE;
+ return;
}
context_x11 = GDK_X11_GL_CONTEXT (context);
- if (context_x11->glx_context == NULL)
- return FALSE;
-
window = gdk_gl_context_get_window (context);
// If the WM is compositing there is no particular need to delay
g_print ("Making GLX context current to drawable %lu\n",
(unsigned long) context_x11->drawable));
- gdk_x11_display_error_trap_push (display);
-
glXMakeContextCurrent (dpy, context_x11->drawable, context_x11->drawable,
context_x11->glx_context);
else
glXSwapIntervalSGI (0);
}
-
- if (gdk_x11_display_error_trap_pop (display))
- {
- g_critical ("X Error received while calling glXMakeContextCurrent()");
- return FALSE;
- }
-
- return TRUE;
}
/**
cairo_region_t *update_area);
void gdk_x11_display_destroy_gl_context (GdkDisplay *display,
GdkGLContext *context);
-gboolean gdk_x11_display_make_gl_context_current (GdkDisplay *display,
+void gdk_x11_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context);
G_END_DECLS
NULL);
if (priv->context != NULL)
{
- if (gdk_gl_context_make_current (priv->context))
- {
- glGenFramebuffersEXT (1, &priv->framebuffer);
- glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, priv->framebuffer);
- }
- else
- {
- g_warning ("Unable to make new context current");
- }
+ gdk_gl_context_make_current (priv->context);
+ glGenFramebuffersEXT (1, &priv->framebuffer);
+ glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, priv->framebuffer);
}
}
if (priv->context != NULL)
{
- if (priv->framebuffer != 0 && gtk_gl_area_make_current (self))
+ if (priv->framebuffer != 0)
{
+ gtk_gl_area_make_current (self);
/* Bind 0, which means render to back buffer, as a result, fb is unbound */
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
glDeleteFramebuffersEXT (1, &priv->framebuffer);
if (priv->context == NULL)
return FALSE;
- if (!gtk_gl_area_make_current (self))
- return FALSE;
+ gtk_gl_area_make_current (self);
scale = gtk_widget_get_scale_factor (widget);
w = gtk_widget_get_allocated_width (widget) * scale;
color_tex ? GL_TEXTURE : GL_RENDERBUFFER,
scale, 0, 0, w, h);
- if (!gtk_gl_area_make_current (self))
- g_error ("can't make old context current again");
+ gtk_gl_area_make_current (self);
}
else
{
* #GtkGLArea::render signal, and should not be called by
* application code.
*
- * Returns: %TRUE if the context was associated successfully with
- * the widget
- *
* Since: 3.16
*/
-gboolean
+void
gtk_gl_area_make_current (GtkGLArea *area)
{
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
GtkWidget *widget;
- g_return_val_if_fail (GTK_IS_GL_AREA (area), FALSE);
+ g_return_if_fail (GTK_IS_GL_AREA (area));
widget = GTK_WIDGET (area);
- g_return_val_if_fail (gtk_widget_get_realized (widget), FALSE);
- if (priv->context == NULL)
- return FALSE;
+ g_return_if_fail (gtk_widget_get_realized (widget));
- return gdk_gl_context_make_current (priv->context);
+ if (priv->context)
+ gdk_gl_context_make_current (priv->context);
}
GdkGLContext * gtk_gl_area_get_context (GtkGLArea *area);
GDK_AVAILABLE_IN_3_16
-gboolean gtk_gl_area_make_current (GtkGLArea *area);
+void gtk_gl_area_make_current (GtkGLArea *area);
G_END_DECLS
if (gtk_widget_get_realized (widget))
{
- if (!gtk_gl_area_make_current (glarea))
- {
- g_warning ("Unable to make gl context current");
- return;
- }
-
+ gtk_gl_area_make_current (glarea);
reshape (allocation->width, allocation->height);
}
}
GTK_WIDGET_CLASS (gtk_gears_parent_class)->realize (widget);
- if (!gtk_gl_area_make_current (glarea))
- {
- g_warning ("Unable to make gl context current");
- return;
- }
+ gtk_gl_area_make_current (glarea);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glEnable(GL_CULL_FACE);